import json

import 面向对象的最后案例
test3 = 面向对象的最后案例.Dog('看门狗')
print(test3.name)  # 从输出的结论可见使用 import 导入模块之后运行当前模块会将导入对象内的所有代码运行一遍，也即会输出预期之外的结果
from 面向对象的最后案例 import Game
test4 = Game('测试人员')
test4.show_help()  # 从输出的结论可见使用 from ... import ... 导入模块之后运行当前模块会将来自对象内的所有代码运行一遍，也即会输出预期之外的结果
# 若调用的是其它包下的模块，可以在模块的前面加上包名.
# 调用没有带包名的模块的逻辑是先在当前包下找该模块，若没有就去设置好的环境变量下找，若还是没有，则代码报错
# 比如 import os ，这就是系统环境变量下的模块
# 应避免自己的模块名和已有的模块重名，否则很可能导致导入的模块不符预期
# 若想导入的模块避免出现输出不合意的情况，也即导入的过程中尽管对象内所有代码都会走一遍但还是能够可控输出
# 解决办法有二：一个是到那个来源下，把不想执行的代码注释掉，二个是在不想执行的代码（块）前加入一个判断：
# 即：if __name__ == '__main__': 对一个文件来说，在自己路径下运行时，它的 __name__ 就是 '__main__'
# 但是在另一个文件导入它时，它的 __name__ 就不是 '__main__' 了，会被重命名为文件自己的名字
# 常用的系统模块有： os ：有着操作文件和目录的功能
#                 datetime：处理日期，时间相关
#                 sys：处理系统相关
import os

print('打印当前路径下所有内容：', os.listdir())
print('返回当前工作目录：', os.getcwd())
print('判断路径是否存在：', os.path.exists(r'D:\360驱动大师目录\下载保存目录\SeachDownload'))  # 查询的内容前加个 r 可以避免因为路径中含有中文导致的输出错误
print('获取本文件所在路径：', __file__)

from datetime import datetime
now = datetime.now()  # 调用方法后获取的数据的类型为：<class 'datetime.datetime'>
print(type(now), now)
current_time_str = now.strftime('%Y-%m-%d %H:%M:%S')  # 此方法可将 <class 'datetime.datetime'> 转换为 字符串类型
print(type(current_time_str), current_time_str)
current_time = now.strptime(current_time_str, '%Y-%m-%d %H:%M:%S')  # 此方法可将 字符串类型 转换为 <class 'datetime.datetime'>
print(type(current_time), current_time)

import sys

print('输出模块的路径：', sys.path)
print('返回当前系统：', sys.platform)  # 注意到这里用的都是属性而非方法
# 关于第三方模块（包），需要先下载安装才能调用，使用工具是 pip
# 如在CMD下运行：pip install 模块/包 -i https://mirrors.aliyun.com/pypi/simple pip show 模块/包 python -m pip install --upgrade pip
